#ifndef CFONTSHADERCLASS_H
#define CFONTSHADERCLASS_H

class CFontShaderClass
{
	struct ConstantBufferType
	{
		D3DXMATRIX d3dWorldMatrix;
		D3DXMATRIX d3dViewMatrix;
		D3DXMATRIX d3dProjectionMatrix;
	};

	struct PixelBufferType
	{
		D3DXVECTOR4 d3dPixelColor;
	};

	ID3D11VertexShader* m_pVertexShader;
	ID3D11PixelShader* m_pPixelShader;
	ID3D11InputLayout* m_pLayout;
	ID3D11Buffer* m_pConstantBuffer;
	ID3D11SamplerState* m_pSampleState;
	ID3D11Buffer* m_pPixelBuffer;

	bool InitializeShader(ID3D11Device* pDevice, HWND hWnd, WCHAR* pwszVSFileName, WCHAR* pwszPSFileName);
	void ShutDownShader();
	void OutputShaderErrorMessage(ID3D10Blob* pErrorMessage, HWND hWnd, WCHAR* pwszFileName); 

	bool SetShaderParameters(ID3D11DeviceContext* pDeviceContext, D3DXMATRIX d3dWorld, D3DXMATRIX d3dView, D3DXMATRIX d3dProj, ID3D11ShaderResourceView* pTexture, D3DXVECTOR4 d3dColor);
	void RenderShader(ID3D11DeviceContext* pDeviceContext, int nIndexCount);

public:
	CFontShaderClass(void);
	CFontShaderClass(const CFontShaderClass&);
	~CFontShaderClass(void);

	bool Initialize(ID3D11Device* pDevice, HWND hWnd);
	void ShutDown();
	bool Render(ID3D11DeviceContext* pDeviceContext, int nIndexCount, D3DXMATRIX d3dWorld, D3DXMATRIX d3dView, D3DXMATRIX d3dProj, ID3D11ShaderResourceView* pTexture, D3DXVECTOR4 d3dColor);
};

#endif